Skip to content

JD8 汽水瓶 ​

本节目标:理解“JD8 汽水瓶”的核心思路,并能把它用于实际开发或面试表达。

说明:原 OneNote 中有图片引用,但图片未包含在导出目录中;本页保留了可用的文字与代码内容。 简单 通过率:28.73% 时间限制:1秒 空间限制:32M 知识点==数学====模拟==

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。 描述 某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。 小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。 数据范围:输入的正整数满足 1≤�≤100 1≤n≤100

注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。 输入描述: 输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。 输出描述: 对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。 示例1 输入: 310810 ==复制== 输出: 1540 ==复制== 说明: 样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板

def maxDrinks(n): drinks = 0 # 可以喝到的汽水数量 while n > 2: # 当手上的空瓶数大于2时,可以继续换汽水 exchange = n // 3 # 当前能够换到的汽水瓶数 drinks += exchange # 增加喝到的汽水数量 n = n % 3 + exchange # 更新剩余的空瓶数量(换完汽水后剩余的空瓶数 + 新喝完的空瓶数) if n == 2: # 如果最后剩下两个空瓶,可以借一个空瓶换一瓶汽水 drinks += 1 return drinks

读取多组输入直到遇到0 ​

while True: n = int(input()) if n == 0: break print(maxDrinks(n))

本站总访问 — 次